import zoneinfo
from datetime import datetime

from rosa.love_is_blue.types import PayloadData, settings
from rosa.scarborough_fair import cache


async def is_superuser(payload: PayloadData | None) -> bool:
    # TODO 权限判断，这里只是简单的判断是否有管理员字段
    # 现有阶段只判断"status:all"是否存在，后续可根据需求扩展
    # 生成token时，如果是超级用户，会主动将"status:all"加入scopes中
    # 如果是普通用户，只能查看status为active的数据
    if payload is None or not payload.data:
        return False

    is_superuser_value = await cache.get_permission(payload.data.id, 'superuser')
    is_superuser_value = is_superuser_value[0] if isinstance(is_superuser_value, list) else False
    if isinstance(is_superuser_value, bool):
        return is_superuser_value
    else:
        return False


def get_now_time(tz: str | None = None) -> datetime:
    utc_now = datetime.utcnow()
    if not tz:
        tz = settings.TIMEZONE
    timezone = zoneinfo.ZoneInfo(tz)
    local_time = utc_now.astimezone(timezone)
    return local_time
